package com.huang.main;

import com.huang.dos.Menu;
import com.huang.dos.TreeNode;

import java.util.ArrayList;
import java.util.List;

/**
 * @author mr.huang [jie88888822@163.com]
 * @devTime 2022-06-09
 * 递归：理解为方法自己调用自己，必须要有结束条件，称为函数的递归调用
 */
public class Recursion {

	/**
	 * 递归化节点
	 * @param menus
	 * @param parentId
	 * @return
	 */
	public static List<TreeNode> buildMenu(List<Menu> menus, Integer parentId){
		List<TreeNode> treeNodes = new ArrayList<>();
		menus.forEach(m -> {
			if(m.getParentId().equals(parentId)){
				TreeNode node = new TreeNode<>(m.getId(),m.getName(),m.getParentId());
				node.setChildren(buildMenu(menus,node.getId()));
				treeNodes.add(node);
			}
		});
		return treeNodes;
	}

	/**
	 * 递增值
	 * @param num
	 * @return
	 */
	public static int sum(int num){
		if(num==1){
			return 1;
		}
		return num + sum(num - 1);
	}

	/**
	 * 1 4 9 16 第10个数是什么？
	 * @param num
	 * @return
	 */
	public static int law(int num){
		if(num==1){
			return 1;
		}
		return law(num - 1) + (2 * num -1);
	}
}
